# def function_tips():
# import datetime
# mot=["a",
# "b",
# "c",
# "d",
# "e",
# "f"]
# day=datetime.datetime.now().weekday()
# print(mot[day])
# function_tips()

# #定义函数
# def dome(obj):
#     ("形参值",obj)
#     obj+=obj
#     print("形参值",obj)
# #调用函数
# print("======值传递==========")
# string="这是第一个测试"
# print("调用函数前实参值：",string)
# dome(string)
# print("调用函数后实参值",string)
# print("======引用传递==========")
# list1=['1','2','3','4']
# print("调用函数前实参值：",list1)
# dome(list1)
# print("调用函数后实参值",list1)

# def fun_bmi(person,height,weight):
#     '''功能：根据身高体重计算BMI
#     person:姓名
#     height:身高，单位：米
#     weigh:体重，单位：千克
#     '''
#     print(person+"的身高"+str(height)+"米 \t 体重："+str(weight)+"千克")
#     bmi=weight/(height*height)
#     print(person+"的BMI指数为："+str(bmi))
#     #判断身材是否合理
#     if bmi<18.5:
#         print("您的体重过轻")
#     if bmi>=18.5:
#         print("您的体重正常")
#     if bmi>=24.9:
#         print("您的体重过重")
#     if bmi>=29.9:
#         print("您肥胖")
# #***************调用函数***************#
# fun_bmi("路人甲",1.83,60)   #计算甲BMI
# fun_bmi("路人乙",1.60,50)   #计算乙BMI


# 20221020课堂笔记


# 形参  VS  实参
# 值传递    实参不可修改     型变实不变
# 引用传递  实参可修改       型变实也变

# '''def h(i,k,j):
#     print(i,k,j)

# def g(e,args):
#     for i in a:
#         print(i,end="")
#     print()

# g(1)'''
# print(1)

# def y(a,b,c,d):
#     print(a,b,c,d)
# r=(1,2,3,4)
# y(*r)

# from re import S


# from re import M


# def F(a,b=20,*x,**y):
#     s=a+b
#     for i in x:
#         s+=i
#     for i in y.values():
#         s+=i
#     return s
# Sum=F(2,10,1,2,3,4,c=10,d=20)
# print(Sum)


# def fun_checkout(money):
#     money_old=sum(money)
#     money_new=money_old
#     if 500<=money_old<1000:
#         money_new='{:.2f}'.format(money_old*0.9)
#     elif 1000<=money_old<=2000:
#         money_new='{:.2f}'.format(money_old*0.8)
#     elif 2000<=money_old<=3000:
#         money_new='{:.2f}'.format(money_old*0.7)
#     elif money_old>=3000:
#         money_new='{:.2f}'.format(money_old*0.6)
#     return money_old,money_new
#     # 调用函数
# print("\n开始结算……\n")
# list_money=[]
# while True:
#     inmoney=float(input("请输入商品金额（输入零表示完毕）"))
#     if int(inmoney)==0:
#         break
#     else:
#         list_money.append(inmoney)
# money=fun_checkout(list_money)
# print("合计金额：",money[1])

# # 定义一个计算圆面积的函数
# # 常规表达式
# import math
# from unittest import result
# def circlearea(r):
#     result=math.pi*r*r
#     return result
# r=10
# print('半径为：',r,'圆的面积为：',circlearea(r))

# # lambda表达式
# import math
# r=10
# result=lambda r:math.pi*r*r
# print('半径为：',r,'圆的面积为：',result(r))

# # 例子
# bookinfo=[('不一样的卡梅拉全套',22.50,120),('零基础android',65.10,89.80),('百度云',22,23),('福尔摩斯探案全集',33,34)]
# print('爬取到的信息：\n',bookinfo,' \n')
# bookinfo.sort(key=lambda x:(x[1],x[1]/x[2]))
# print('排序后的商品信息：\n',bookinfo)

# # 数苹果
# def division():
#     print("\n==============分苹果了==================\n")
#     apple=int(input("请输入苹果的个数："))
#     children=int(input("请输入来了几个小朋友："))
#     result=apple//children
#     remain=apple-result*children
#     if remain>0:
#         print(apple,"个苹果，平均分给",children,"个小朋友，每人分",result,"个，剩下",remain,"个。")
#         # print(111)
#     else:
#         print(apple,"个苹果，平均分给",children,"个小朋友，每人分",result,"个。")

# try :
#     division()
# except ZeroDivisionError:
#     print("\n出错了，苹果不能被0个小朋友分！")
# except ValueError as e:
#     print("输入错误：",e)
# else:
#     print("分苹果顺利完成。")
# finally:
#     print("进行了一次分苹果操作。")


# # 数苹果更改
# def division():
#     print("\n==============分苹果了==================\n")
#     apple=int(input("请输入苹果的个数："))
#     children=int(input("请输入来了几个小朋友："))
#     if apple < children:
#         raise ValueError("苹果太少了不够分。。。")

#     result=apple//children
#     remain=apple-result*children
#     if remain>0:
#         print(apple,"个苹果，平均分给",children,"个小朋友，每人分",result,"个，剩下",remain,"个。")
#     else:
#         print(apple,"个苹果，平均分给",children,"个小朋友，每人分",result,"个。")
# try :
#     division()
# except ZeroDivisionError:
#     print("\n出错了，苹果不能被0个小朋友分！")
# except ValueError as e:
#     print("\n出错了\n",e)

# 20221025课堂笔记
# 面向概念等

# 20221031笔记
# class Preson():
#     name = "Tom"
#     age=12
# def run(self):
#     print(self.name,"run")
# def jump(self):
#     print(self.name,"jump")

# peopleA=Preson()
# peopleB=Preson()


# 类属性  共有属性
# 通过类与实例进行访问
# 只能通过类进行修改
# 通过类可以进行动态添加

# 实例方法：无任何装饰器修饰的方法 对象能调用 第一个参数为false 对象可调用 self访问属性
# 实例属性    私有属性
# 通过实例进行访问
# 通过实例进行


# 类方法  静态方法 在类内部 装饰器为@classmethod
# 类内部    cls访问
# @语法糖->装饰器  ->升级(添加额外功能)(调整和修改)(把方法作为参数封装)(定义一个类方法)
# @classmethod#添加一个装饰器
# def fly(cls):#代表类本身
#     print('cls.name')
#     print(cls.age)
#     print("fly")


# Person.fly()
# peopleA.fly()
# 静态方法不会操作类属性
# 类内部 装饰器为@staticmaehod 无参数 对象和类都能调用 一般不访问 

# 模拟电影点播
# class TVshow:
#     list_film=['战狼2','红海行动','西游记女儿国','熊出没','变形记']
#     def __init__(self,show):
#         self.__show=show
#     @property
#     def show(self):
#         return self.__show
#     @show.setter
#     def show(self,value):
#         if value in TVshow.list_film:
#             self.__show = '您点播的电影不存在'
# tvshow=TVshow('战狼2')
# print('')
# print('')
# tvshow.show='红海行动'
# print('')


# 20221103课堂笔记
# 实例方法 对象能调用 

# from cgi import print_form


# class Swan:
#     '''天鹅类'''
#     _neck_swan='天鹅脖子很长'
#     def __init__(self) :
#         print('__init__():',Swan._neck_swan)
# wildswan=Swan()
# print('直接访问'，wildswan._nect_swan)




# class Swan:
#     '''天鹅类'''
#     _wing_swan='天鹅翅膀也很长'
#     def __init__(self) :
#         print('__init__():',Swan._neck_swan)
# wildswan=Swan()
# print('加入类名'，wildswan.Swan_nect_swan)
# print('直接访问'，wildswan._nect_swan)

# class Person:
#     def_init_(self,name):
#     self.name=name
#     self._age=1
# def set_age(self,new_age):
#     if 0<new_age <=120:
#         self.age=new_age
# def get_age(self):
#         return self._age

# class Cat:
#     def shout(self):
#         print("喵喵喵~")
# class Dog:
#     def shout(self):
#         print("汪汪汪~")
# def shout(obj):
#     obj.shout()
# cat=Cat()
# dog=Dog()
# shout(cat)
# shout(dog)

# class Calculator(object):
#     def __init__(self,number):
#         self.number=number
#     def __init__(self,other):
#         self.number=self.number+other
#         return self.number。
# 
# 
#     def __sub__(self,other):
#         self.number=self.number-other
#     def __mul__(self,other):
#         self.number=self.number*other
#         return self.number
#     def __init__(self,number):
#         self.number=self.number/other
#         return self.number


# 周六和同学去上课，
# 文件名
# 用户组
# 组名
# 新装的
# 密码
# 内容
# 占位符
# id号
# 概念
# 查看
# 此文件
# 基础
# 看一下
# 创建
# 可以
# 命令
# 最简单
# Tom
# 权限
# 看一下
# 显示
# 很多
# 用户
# 系统
# 后面一个
# 比较多
# 指定
# 表示
# 最后十行
# 正常
# 正常来说
# 新建用户
# 设置密码
# 翻译
# 翻译
# 翻译
# 密码管理
# 新密码
# 设置一下
# 输密码
# 输入两遍
# 设置完了
# 进入当亲用户
# 进入当前用户
# 然后可以看到跳出一些环境
# 可以获取
# 不用管他
# 打开终端
# 用的bash
# 新的用户环境不一样
# 调用实例属性
# 权限
# @property
# 公有私有受保护的
# 共有public
# 私有private
# 受保护的protected
# 封装
# get set 
# 帮助 封装

# 继承
# 两种继承 单和多
# 多 亲父类 类（ba1，ba2，...)
# 单 类名（爸爸）

# 多态
# 房子案例 java方法记忆
# Father送= new Son()

# 运算符重写object方法 class类名(object)

# 模块
# 方法一：import turtle   #引入绘图库turtle
    # turtle.属性(参数)
    # turtle.penup() # 起笔
    # turtle.fd(-250) # 起点向左移动250像素
    # turtle.pendown() # 落笔
    # turtle.pensize(25) # 设置
# 方法二：from turtle import *
    # 属性(参数)
    # penup() # 起笔
    # fd(-250) # 起点向左移动250像素
    # pendown() # 落笔
    # pensize(25) # 设置腰围，画笔宽度
    # pencolor(
# 方法三：import turtle as t            # t为别名 
    # 别名.属性(参数)
    # t.penup() # 起笔
    # t.fd(-250) # 起点向左移动250像素
    # t.pendown() # 落笔
    # t.pensize(25) # 设置腰围，画笔宽度
    # t.pencolor()

# 20221114课堂笔记
# 连接数据库 新的软件开源 通过 新版Msqul连接
# 文件路径 组成 Windows 系统 路径 python语言 反斜杠\windows与斜杠/Linux 
# 文本文件 存文字，二进制文件 图视频 。 
# python sys模块 3个标准文件 stdin标准输入文件 stdout标准输出文件 stderr标准错误文件
# 标准文件 print调用 底层在做什么 
# 文件基本操作：打开 输入 删除 保存 关闭 完整文件使用中不可删除 python通过模仿Windows逻辑 
# open() 打开文件 r只读 w只写 a以追加方式打开 b二进制方式打开 +以更新的方式打开文件 r/rb文本/二进制只读 w/wb文本/二进制只写 a/ab文本/二进制追加 r+/rb+读取更新模式 w+/wb+写入更新模式 a+ab+追加更新模式 
# 临时补充：缓冲的概念 数据在服务器database上 先看到文字 国外服务器慢速 提速 内地缓存 开发者设计缓存 电脑不会自动缓存 缓存保存在内存中 文件打开内存中 回退缓存中要有 云端 本地不易丢失数据 国外数据库方放端上 他人查看部署文件到云端 国外免费使用亚马逊源(不稳定) 
# close() 关闭 打开文件后及时关闭 with语句实现自动关闭文件 关闭原因：打开有限 占用资源 操作异常数据丢失
# readline() 读一行数据 返回一个列表 输入占用字节utf-8两字节 jbk占用三字节 
# 添加需改数据的保存  保存人名、成绩数据 数据错误 txt excel 等文件形式 ASC码